package com.yyy.spring6.aop.example;

/**
 * @Project ：learn_spring
 * @File ：CalculatorStaticProxy.java
 * @IDE ：IntelliJ IDEA
 * @Author ：自由如风间
 * @Date ：2025/4/2 16:32
 * @Description ：静态代理类，但并没有对日志部分进行分离，仍未解耦
 */

// 代理类
public class CalculatorStaticProxy implements Calculator {

    private Calculator calculator;

    public CalculatorStaticProxy(Calculator calculator) {
        this.calculator = calculator;
    }

    // 这里只修改add方法，其他方法同理
    @Override
    public int add(int i, int j) {
        // 日志输出
        String methodName = Thread.currentThread().getStackTrace()[2].getMethodName();
        System.out.println("[日志] 方法 " + methodName + "开始了，参数是：" + i + ", " + j);

        // 代理部分，不太理解这一步，画蛇添足
        int result = calculator.add(i, j);

        // 日志输出
        System.out.println("方法内部 result = " + result);
        System.out.println("[日志] 方法 " + methodName + "结束了，结果是：" + result);
        return result;
    }

    @Override
    public int sub(int i, int j) {
        return 0;
    }

    @Override
    public int mul(int i, int j) {
        return 0;
    }

    @Override
    public int div(int i, int j) {
        return 0;
    }
}
